web安全|渗透测试

基础概念

域名

概念:

每一个计算机都有一个数字地址,— IP地址,但是这个IP地址很复杂,难以记住,所以我们就给他一个容易记的别名—域名.例如:百度的IP地址之一是:180.101.50.242,域名是:www.baidu.com

结构:

一个完整的域名是从右到左读的,

                  www        .    baidu       .    com
                [子域名]         [二级域]         [顶级域]
  • 顶级域(TLD):也叫做“域名后缀”,是最后一部分,如 .com
    • 通用顶级域(gTLD):如 .com(公司/商业)、.org(组织)、.net(网络)、.edu(教育机构),以及现在成千上万的新顶级域如 .app, .shop, .ai 等。
    • 国家和地区代码顶级域(ccTLD):如 .cn(中国)、.us(美国)、.jp(日本)等。
  • 二级域(SLD):这是域名的核心部分,是您自己注册和选择的独特名称,如 baidu。它代表了您的品牌、公司或个人身份。
  • 子域名:这是最左边的部分,是可选的,如 www

域名是怎么工作的?

当你在浏览器中输入一个域名并按下回车时,背后发生了一个非常快速和复杂的过程,这依赖于 域名系统(DNS)

你可以把 DNS 想象成互联网的“巨型电话簿”或“导航地图”。

过程简化如下:

  1. 您在浏览器输入 www.baidu.com
  2. 您的计算机会向 DNS服务器 发出一个查询请求:“请问 www.baidu.com 的IP地址是多少?”
  3. DNS服务器在它的记录中查找,最终找到对应的IP地址,例如 180.101.50.242
  4. DNS服务器将这个IP地址返回给您的浏览器。
  5. 您的浏览器拿到IP地址后,才真正地向 180.101.50.242 这个服务器发起连接,请求网站内容。
  6. 服务器将网页数据发送回您的浏览器,您就看到百度的首页了。

整个过程通常在毫秒之间完成。

HOSTS文件和DNS

HTTPHTTPS 的网络协议栈对比


HTTP 的协议栈

text

1
2
3
HTTP
TCP
IP
  • HTTP(超文本传输协议):负责传输网页内容。
  • TCP(传输控制协议):提供可靠的数据传输。
  • IP(网际协议):负责网络寻址和路由。

特点:数据是明文传输,不安全,容易被窃听或篡改。


HTTPS 的协议栈

text

1
2
3
4
HTTP
SSL or TLS
TCP
IP
  • HTTP:仍然是传输网页内容的应用层协议。
  • SSL / TLS(安全套接层 / 传输层安全协议):在 HTTP 和 TCP 之间加入了一个安全层
  • TCPIP:基础通信协议不变。

特点

  • 在 HTTP 和 TCP 之间增加了 SSL/TLS 加密层。
  • 数据经过加密,防止窃听和篡改。
  • 提供身份验证,确保你连接的是正确的服务器。

核心区别总结

特性 HTTP HTTPS
安全性 明文传输,不安全 加密传输,安全
协议栈 HTTP → TCP → IP HTTP → SSL/TLS → TCP → IP
默认端口 80 443
用途 普通网页浏览 需要安全性的场景(如登录、支付

请求-响应模型

HTTP 协议基于客户端-服务器模型。一次完整的交互包含一对 RequestResponse

  • 客户端 (Client):通常是 Web 浏览器或 App,主动发起一个 Request
  • 服务器 (Server):接收并处理 Request,然后返回一个 Response

核心组件对比

组件 Request(请求) Response(响应)
起始行 请求行:定义了操作的类型和目标。 状态行:报告了请求的处理结果。
头部 请求头:传递客户端信息、请求偏好和条件。 响应头:传递服务器信息、响应元数据和指令。
主体 请求体:包含要发送给服务器的数据(可选)。 响应体:包含服务器返回的实际数据(可选)。

一、Request(请求) - 详细分解

请求包是客户端向服务器发出的“问题”或“指令”。

1. 请求行

请求的第一行,格式为:<方法> <请求目标> <HTTP版本>

部分 描述 常见示例
方法 定义要对资源执行的操作。 GET(获取资源),POST(提交数据),PUT(更新资源),DELETE(删除资源),HEAD(获取元数据)
请求目标 指定请求的资源。通常是 URL 的路径部分。 /index.html, /api/users/123
HTTP 版本 客户端使用的协议版本。 HTTP/1.1, HTTP/2

2. 请求头

一系列键值对,为服务器提供请求的附加信息。

常见请求头 描述
Host 必需。服务器的域名和端口。
User-Agent 客户端软件标识(浏览器/操作系统)。
Accept 客户端能够处理的响应内容类型(如 text/html, application/json)。
Content-Type 请求体的媒体类型(如 application/json)。
Content-Length 请求体的长度(字节)。
Authorization 包含访问资源的凭证(如 Bearer <token>)。
Cookie 将之前服务器设置的 Cookie 回传。

3. 请求体

  • 用途:用于在 POSTPUT 等方法中携带需要发送的数据。
  • 内容:表单数据、JSON、XML、文件等。
  • 格式:由 Content-Type 头指定。

Request 完整示例

http

1
2
3
4
5
6
7
8
POST /api/login HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Type: application/json
Content-Length: 52
Accept: application/json

{"username": "alice", "password": "Str0ngP@ssw0rd!"}

解读

  • 请求行:使用 POST 方法向 /api/login 发送数据。
  • 请求头
    • Host:目标服务器。
    • Content-TypeContent-Length:描述了请求体是长度为 52 字节的 JSON 数据。
    • Accept:期望服务器返回 JSON 格式的响应。
  • 请求体:具体的登录凭证(JSON 格式)。

二、Response(响应) - 详细分解

响应包是服务器对客户端请求的“回答”。

1. 状态行

响应的第一行,格式为:<HTTP版本> <状态码> <原因短语>

部分 描述 常见示例
HTTP 版本 服务器使用的协议版本。 HTTP/1.1, HTTP/2
状态码 一个三位数代码,表示请求的结果。 200 OK(成功),404 Not Found(未找到),500 Internal Server Error(服务器错误)
原因短语 状态码的简短文字描述。 OK, Not Found

主要状态码分类

  • 1xx (信息):请求已接收,继续处理。
  • 2xx (成功):请求被成功处理。200 OK 是最常见的成功状态。
  • 3xx (重定向):需要客户端进一步操作以完成请求。
  • 4xx (客户端错误):请求包含语法错误或无法完成。404 Not Found(资源不存在),403 Forbidden(无权限)。
  • 5xx (服务器错误):服务器处理请求时发生错误。500 Internal Server Error(服务器内部错误)。

2. 响应头

一系列键值对,提供关于响应的元数据。

常见响应头 描述
Content-Type 响应体的媒体类型(如 text/html; charset=UTF-8)。
Content-Length 响应体的长度(字节)。
Server 服务器软件信息。
Set-Cookie 指示客户端存储一个 Cookie。
Cache-Control 指示如何缓存响应(如 max-age=3600)。
Location 在重定向时使用,指定新的资源地址。

3. 响应体

  • 用途:包含服务器返回的实际数据。
  • 内容:如果请求成功,可能是 HTML 网页、JSON 数据、图片等。如果请求失败,可能是错误描述页面。

Response 完整示例

http

1
2
3
4
5
6
7
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 67
Server: nginx/1.18.0
Set-Cookie: session_id=abc123; Path=/; HttpOnly

{"status": "success", "message": "Login successful", "user_id": 12345}

解读

  • 状态行HTTP/1.1 200 OK 表示请求已成功处理。
  • 响应头
    • Content-TypeContent-Length:描述了响应体是 JSON 数据。
    • Server:显示了服务器软件是 Nginx。
    • Set-Cookie:要求浏览器设置一个会话 Cookie。
  • 响应体:具体的成功响应数据(JSON 格式)。

总结

特性 Request(请求) Response(响应)
发起方 客户端 服务器
目的 向服务器索取资源或提交数据 返回客户端请求的结果或数据
起始行 请求行(方法 + URL + 版本) 状态行(版本 + 状态码 + 原因)
主体内容 要上传的数据(如表单、文件) 要下载的数据(如网页、API 结果)